﻿#define _CRT_SECURE_NO_WARNINGS 1
如果已知英制长度的英尺foot和英寸inch的值，那么对应的米是(foot + inch / 12)×0.3048。现在，如果用户输入的是厘米数，那么对应英制长度的英尺和英寸是多少呢？别忘了1英尺等于12英寸。
输入格式：
输入在一行中给出1个正整数，单位是厘米。
输出格式：
在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值，中间用空格分开。英寸的值应小于12。
#include <stdio.h>
int main()
{
    int foot = 0;
    int inch = 0;
    int Long = 0;
    scanf("%d", &Long);
    foot = Long / 30.48;
    inch = 12 * (Long / 30.48 - foot);
    printf("%d %d", foot, inch);
    return 0;
}
有时候人们用四位数字表示一个时间，比如 1106 表示 11 点零 6 分。现在，你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字，第一个数字以这样的四位数字表示当前时间，第二个数字表示分钟数，计算当前时间经过那么多分钟后是几点，结果也表示为四位数字。当小时为个位数时，没有前导的零，例如 5 点 30 分表示为 530；0 点 30 分表示为 030。注意，第二个数字表示的分钟数可能超过 60，也可能是负数。
输入格式：
输入在一行中给出 2 个整数，分别是四位数字表示的起始时间、以及流逝的分钟数，其间以空格分隔。注意：在起始时间中，当小时为个位数时，没有前导的零，即 5 点 30 分表示为 530；0 点 30 分表示为 030。流逝的分钟数可能超过 60，也可能是负数。
输出格式：
输出不多于四位数字表示的终止时间，当小时为个位数时，没有前导的零。题目保证起始时间和终止时间在同一天内。
#include <stdio.h>
int main()
{
    int time = 0;
    int _time = 0;
    scanf("%d %d", &time, &_time);
    int hour = time / 100;
    int minute = time % 100;
    if (_time >= 0)
    {
        hour += _time / 60;
        minute += _time % 60;
        while (minute / 60)
        {
            minute -= 60;
            hour++;
        }
        while (hour / 24)
        {
            hour -= 24;
        }
    }
    else
    {
        _time = -_time;
        hour -= _time / 60;
        minute -= _time % 60;
        if (minute < 0)
        {
            minute += 60;
            hour--;
        }
        while (hour < 0)
        {
            hour += 24;
        }
    }
    if(minute == 0)
        printf("%d%d0", hour, minute);
    else
        printf("%d%d", hour, minute);
    return 0;
}
希尔排序
本题要求实现一个函数，求N个集合元素A[]的中位数，即序列中第⌊(N + 1) / 2⌋大的元素。其中集合元素的类型为自定义的ElementType。
函数接口定义：
ElementType Median(ElementType A[], int N);
其中给定集合元素存放在数组A[]中，正整数N是数组元素个数。该函数须返回N个A[]元素的中位数，其值也必须是ElementType类型。
#include <stdio.h>
#define MAXN 10
typedef float ElementType;

ElementType Median(ElementType A[], int N);

int main()
{
    ElementType A[MAXN];
    int N, i;

    scanf("%d", &N);
    for (i = 0; i < N; i++)
        scanf("%f", &A[i]);
    printf("%.2f\n", Median(A, N));

    return 0;
}
ElementType Median(ElementType A[], int N)
{
    int gap = 0;
    for (gap = N / 2; gap >= 1; gap /= 2)
    {
        int i = 0;
        for (i = gap; i < N; i++)
        {
            int j = 0;
            for (j = i - gap; j >= 0; j -= gap)
            {
                ElementType tmp = 0;
                if (A[j + gap] < A[j])
                {
                    tmp = A[j + gap];
                    A[j + gap] = A[j];
                    A[j] = tmp;
                }
                else
                    break;
            }
        }
    }
    return A[N / 2];
}
给一个严格递增数列，函数int Search_Bin(SSTable T, KeyType k)用来二分地查找k在数列中的位置。
函数接口定义：
int  Search_Bin(SSTable T, KeyType k)
其中T是有序表，k是查找的值。
int  Search_Bin(SSTable T, KeyType k)
{
    int left = 0;
    int right = T.length - 1;
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (T.R[mid].key < k)
            left = mid + 1;
        else if (T.R[mid].key > k)
            right = mid - 1;
        else
            return mid;
    }
    return 0;
}
